package cn.com.anypay.manager.common.validation;

import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.*;

/**
 * 手机号格式验证注解
 * 验证手机号是否符合中国大陆手机号规则：11位数字，以1开头，第二位为3-9
 */
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = PhoneNumberFormatValidator.class)
public @interface PhoneNumberFormat {

    String message() default "手机号格式错误：请输入有效的中国大陆手机号码";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * 是否允许为空（默认不允许）
     */
    boolean allowEmpty() default false;

    /**
     * 手机号类型：CHINA_MOBILE（中国大陆）、CHINA_ALL（包含港澳台）、ALL（国际）
     */
    PhoneType type() default PhoneType.CHINA_MOBILE;

    /**
     * 是否允许带国家码（如+86）
     */
    boolean allowCountryCode() default false;

    /**
     * 手机号类型枚举
     */
    enum PhoneType {
        CHINA_MOBILE,    // 中国大陆手机号
        CHINA_ALL,       // 中国（包含港澳台）
        ALL              // 所有国际手机号
    }
}